#ifndef LEFTLOGINWIDGET_H
#define LEFTLOGINWIDGET_H

#include <QWidget>
#include <QLabel>
#include <QVBoxLayout>
#include <QCheckBox>
#include <QPushButton>
#include "EditBox.h"
#include "LoginWidget_global.h"
#include "../BaseWidgets/FramelessWidget.h"
#include "../BaseWidgets/FramelessWidget.h"

namespace UserManagementSystem {
class LOGINWIDGET_EXPORT LeftLoginWidget : public FramelessWidget
{
    Q_OBJECT
public:
    explicit LeftLoginWidget(QWidget *parent = nullptr);

private:
    ///@brief 加载图标
    void LoadIcon();

    ///@brief 设置布局的函数
    void SetDefaultLayout();

    ///@brief 设置默认样式的函数
    void SetDefaultStyle();

    ///@brief 处理登录事件的接口函数
    void ProcessLogin();

    ///@brief 处理忘记密码事件的接口函数
    void ProcessForgetPassword();

    ///@brief 处理注册事件
    void ProcessRegister();

    ///@brief 处理服务条款
    void ProcessServiceItems();

private:
    ///@brief 登录按钮点击槽函数
    void On_LoginBtn_Clicked();

    ///@brief 忘记密码按钮点击槽函数
    void On_ForgetBtn_Clicked();

    ///@brief 注册按钮点击槽函数
    void On_RegisterBtn_Clicked();

    ///@brief 用户须知按钮点击槽函数
    void On_UserInfoBtn_Clicked();

private:
    ///@brief 主布局
    QVBoxLayout* m_mainLayout=nullptr;

    ///@brief 标签
    QLabel* m_titleLabel=nullptr;
    QLabel* m_infoLabel=nullptr;

    ///@brief 账号密码两个组件的布局
    QVBoxLayout* m_accountLayout=nullptr;

    ///@brief 两个窗口，键入账号和密码
    EditBox *m_accountEdit=nullptr;
    EditBox *m_passwordEdit=nullptr;

    ///@brief 一个QHBoxlayout放置忘记密码按钮和注册按钮
    QHBoxLayout* m_forgetAndRigLayout=nullptr;

    ///@brief 记住密码按钮
    QCheckBox *m_remPassword=nullptr;

    ///@brief
    QPushButton* m_loginBtn=nullptr;

    ///@brief 忘记密码按
    QPushButton* m_forgetPassBtn=nullptr;

    /// @brief 注册按钮
    QPushButton* m_registerBtn=nullptr;

    /// @brief 中间的竖线
    QFrame* m_vLine=nullptr;

    /// @brief 用户须知按钮
    QPushButton* m_userTip=nullptr;
};

}

#endif // LEFTLOGINWIDGET_H
